package gamemodels;

import gamecomponents.graphic.BlitData;
import input.InputManager;

import java.util.List;

/**
 * A Model that can be controlled by GameController.
 * @author Teem Deer
 * 
 */
public interface IGameModel {

	/**
	 * 
	 * @return Whether the model is running or not
	 */
	boolean isRunning();

	/**
	 * Reset model
	 */
	void reset();

	/**
	 * Updates the model
	 * 
	 * @param inputManager
	 *            - The input manager with all inputs from the user
	 */
	void update(InputManager inputManager);

	/**
	 * 
	 * @return the next model to be runned
	 */
	IGameModel getNextModel();

	/**
	 * 
	 * @return all blit data in this model to draw on the overlay
	 */
	List<BlitData> getBlitData();

}
